
const target = {
    value:1,
    age:10,
    get doubleValue(){
        return this.value+this.age;
    }
}
class Proxy{
    constructor(target,handler){
        this.target = target;
        this.handler = handler;
    }
    get age (){
        //调用handler上的get方法
        return this.handler.get(this.target,'age',this);
    }
    get value (){
        return this.handler.get(this.target,'value',this);
    }
    get doubleValue (){
        return this.handler.get(this.target,'doubleValue',this);
    }
}
const handler = {
    get(target,prop,receiver){//receiver指向的是Proxy实例
        if(prop === 'age'){
            return 20;
        }
        return Reflect.get(target,prop,receiver);
    }
}
//创建一个Proxy类的实例，可以实现对target的代理，代理的逻辑处理写在handler里
let proxy = new Proxy(target,handler);
console.log(proxy.age)//20
console.log(proxy.value)//1
console.log(proxy.doubleValue)//21